package entidades;

import java.sql.Date;
import java.sql.SQLException;
import java.sql.Time;
import java.util.ArrayList;

import entidades.DAOs.DAOpartidos;
import entidades.DAOs.DAOpuntajes;
import entidades.DTOs.DTOPuntaje;

/**
 * @author sg
 * @version 1.0
 * @created 13-nov-2013 06:33:05 p.m.
 */
public class Fecha {

	private int id_fecha;
	private Date finVeda;
	private Time horaFinVeda;
	private Time horaInicioVeda;
	private Date inicioVeda;
	private int numero;
	private Estado_Fecha estFecha; //private int id_estadoFecha;
	//private int id_torneo;
	private Partido partido;
	
	//public static void main (String[] args) throws SQLException, ClassNotFoundException{

		//Error error = new Error("hola");
		//interfaz.Error.main("Pichichu");
		//error.setVisible(true);
		
	//}
	/*public static void main (String[] args) throws SQLException, ClassNotFoundException{

		Fecha fecha = new Fecha();
		boolean cargado;
		ArrayList <Partido> listaPartidos = new ArrayList <Partido>();
		listaPartidos = DAOpartidos.selectPartidos(003);
		cargado = fecha.partidoCargado(listaPartidos.get(0));
		System.out.println(cargado);
		
	}*/
	
	public boolean partidoCargado(Partido partido) throws ClassNotFoundException, SQLException{
		
		int id_equipoLocal = partido.getId_equipoLocal();
		int id_equipoVisitante = partido.getId_equipoVisitante();
		boolean cargadosLocal = false;
		boolean cargadosVisitante = false;
		boolean jugadorPartido = false;
		boolean suspendido = false;
			
		if(partido.isSuspendido()) suspendido = true;
		
		ArrayList <DTOPuntaje> puntajesLocal = new ArrayList <DTOPuntaje>();
		puntajesLocal = DAOpuntajes.selectPuntajes(id_equipoLocal);
		ArrayList <DTOPuntaje> puntajesVisitante = new ArrayList <DTOPuntaje>();
		puntajesVisitante = DAOpuntajes.selectPuntajes(id_equipoVisitante);
		
		for(int j=0;j<puntajesLocal.size();j++){
			if (puntajesLocal.get(j).isAmarilla() || puntajesLocal.get(j).isRoja() || puntajesLocal.get(j).isFiguraCancha() || puntajesLocal.get(j).getCalificacion() != 0 || puntajesLocal.get(j).getGolesConvertidos() != 0 || puntajesLocal.get(j).getGolesEnContra() != 0 || puntajesLocal.get(j).getGolesRecibidos() != 0 || puntajesLocal.get(j).getPenalesAtajados() != 0 || puntajesLocal.get(j).getPenalesErrados() != 0 || puntajesLocal.get(j).getPenalesConvertidos() != 0 ){
				
				cargadosLocal = true;
				if(puntajesLocal.get(j).isFiguraCancha()) jugadorPartido=true;
			
			}
			
		}
		
		for(int j=0;j<puntajesVisitante.size();j++){
			if (puntajesVisitante.get(j).isAmarilla() || puntajesVisitante.get(j).isRoja() || puntajesVisitante.get(j).isFiguraCancha()|| puntajesVisitante.get(j).getCalificacion() != 0 || puntajesVisitante.get(j).getGolesConvertidos() != 0 || puntajesVisitante.get(j).getGolesEnContra() != 0 || puntajesVisitante.get(j).getGolesRecibidos() != 0 || puntajesVisitante.get(j).getPenalesAtajados() != 0 || puntajesVisitante.get(j).getPenalesErrados() != 0 || puntajesVisitante.get(j).getPenalesConvertidos() != 0 ){
					
				cargadosVisitante = true;
				if(puntajesVisitante.get(j).isFiguraCancha()) jugadorPartido=true;
			
			}
			
		}
		
		if((cargadosLocal && cargadosVisitante && jugadorPartido) || suspendido){
			return true;
		}
		else return false;
		
	}
		
	
	public boolean estanPartidosCargados() throws ClassNotFoundException, SQLException{
		
		int idFecha = this.getId_fecha();
		
		ArrayList <Partido> partidosFecha = new ArrayList <Partido>();
		
		partidosFecha = DAOpartidos.selectPartidos(idFecha); 
		
		boolean partidosCargados = true;
		
		for(int i = 0;i<partidosFecha.size();i++){
			if(!(partidoCargado(partidosFecha.get(i)))){
				partidosCargados = false;
				break;
			}
		}
		return partidosCargados;
		
	}
	
//	public int getId_torneo() {
//		return id_torneo;
//	}
//
//	public void setId_torneo(int id_torneo) {
//		this.id_torneo = id_torneo;
//	}

	public int getId_fecha() {
		return id_fecha;
	}

	public void setId_fecha(int id_fecha) {
		this.id_fecha = id_fecha;
	}

	public Date getFinVeda() {
		return finVeda;
	}

	public void setFinVeda(Date finVeda) {
		this.finVeda = finVeda;
	}

	public Time getHoraFinVeda() {
		return horaFinVeda;
	}

	public void setHoraFinVeda(Time horaFinVeda) {
		this.horaFinVeda = horaFinVeda;
	}

	public Time getHoraInicioVeda() {
		return horaInicioVeda;
	}

	public void setHoraInicioVeda(Time horaInicioVeda) {
		this.horaInicioVeda = horaInicioVeda;
	}

	public Date getInicioVeda() {
		return inicioVeda;
	}

	public void setInicioVeda(Date inicioVeda) {
		this.inicioVeda = inicioVeda;
	}

	public int getNumero() {
		return numero;
	}

	public void setNumero(int numero) {
		this.numero = numero;
	}

	public Estado_Fecha getEstadoFecha() {
		return estFecha;
	}

	public void setEstadoFecha(Estado_Fecha estadoFecha) {
		this.estFecha=estadoFecha;
	}

	public Fecha(){

	}
	
	public void iniciarVeda(){

	}

	public void terminarVeda(){
		
	}

	public void finalize() throws Throwable {

	}

	
}//end Fecha